Skip to main content

UVC Camera

注意:使用uvc工具时,需要打开USB的DMA功能

使用x1600 nand或nor为存储介质时文件路径(kernel/kernel-x2000/arch/mips/boot/dts/ingenic/x1600_halley6_module_base.dts)

使用x1600 mmc为存储介质时文件路径(kernel/kernel-x2000/arch/mips/boot/dts/ingenic/x1600_module_base_mmc0.dts)

1

1 menuconfig 配置流程

Device Drivers  --->
<*> Multimedia support --->
[*] Cameras/video grabbers support

Device Drivers --->
[*] USB support --->
<*> USB Gadget Support --->
<*> USB Gadget Drivers
(USB functions configurable through configfs) --->
[*] USB Webcam function

2 预览彩条使用流程

2.1 切换到uvc应用层目录

cd doc/开发使用说明/USB使用说明文档/设备/USB_UVC/xburst2/

2.2 编译应用程序

../../../../../../buildroot/buildroot/output/host/usr/bin/mips-linux-gnu-gcc uvc-color-bar.c uvc_lib.c -o uvc-color-bar

2.3 将脚本和应用程序push到/usr/data目录

adb push uvc-device-config.sh uvc-color-bar  /usr/data

2.4 uvc-color-bar 参数介绍

video_device=/dev/videoX    //运行脚本生成的设备节点

package_size=value //包大小(8~3072)

io_method=mmap|userptr //申请缓冲区⽅式

nbufs=value //申请缓冲区数量

format=grey,width,height,fps //预览格式

2.5 UVC使用流程

1.关闭adb功能

/etc/init.d/S90adb stop

2

2.配置uvc参数

Usage : ./uvc-device-config.sh start <uvc-ch0:fcc1,width1,height1,fps1/fcc2,width2,height2,fps2/package_size=value>

3

./uvc-device-config.sh start uvc-ch0:format=nv12,1280,720,10/format=yuyv,640,360,10/package_size=1024
运行uvc配置脚本后生成/dev/video12设备节点

3.运行uvc预览应用

Usage : ./uvc-color-bar <video_device=/dev/videoX> <format=grey,width,height,fps> [package_size=value][io_method=mmap|userptr] [nbufs=value]

预览单路uvc彩条运行命令
./uvc-color-bar video_device=/dev/videoX format=nv12,1280,720,10 format=yuyv,640,360,10 package_size=1024 io_method=mmap nbufs=3

特别注意以下事项:
1./dev/videoX设备节点一定是运行uvc-device-config.sh脚本后生成的设备节点/dev/video12
2.uvc-device-config.sh配置uvc支持的格式,应用也只能预览uvc支持的格式
3.uvc传输包的大小范围是83072bit,包越大传输速度越快
4.uvc预览支持NV12、NV21、yuyv、grey、MJPG格式

3 摄像头使用流程

3.1 切换到uvc应用层目录

cd doc/开发使用说明/USB使用说明文档/设备/USB_UVC/xburst2/

3.2 编译应用程序

../../../../../../buildroot/buildroot/output/host/usr/bin/mips-linux-gnu-gcc uvc-camera.c uvc_lib.c -lhardware2 -o uvc-camera

3.3 将脚本和应用程序push到/usr/data目录

adb push  uvc-camera uvc-device-config.sh /usr/data

3.4 uvc-camera 参数介绍

video_device=/dev/videoX             //运行脚本生成的设备节点

camera_device_path //camera设备节点

package_size=value //包大小(8~3072)

io_method=mmap|userptr //申请缓冲区⽅式

nbufs=value //申请缓冲区数量

format=grey,width,height,fps //预览格式

3.5 UVC使用流程

1.关闭adb功能

/etc/init.d/S90adb stop

2.配置uvc参数

Usage : ./uvc-device-config.sh start <uvc-ch0:fcc1,width1,height1,fps1/package_size=value>

5

./uvc-device-config.sh start uvc-ch0:format=yuyv,1920,1080,10/package_size=2048 
运行uvc配置脚本后生成/dev/video12设备节点

3.运行uvc预览应用

Usage : ./uvc-camera <camera_device_path> <video_device=/dev/videoX> <format=grey,width,height,fps> [package_size=value][io_method=mmap|userptr] [nbufs=value]

预览单路uvc摄像头运行命令
./uvc-camera /dev/vic0 video_device=/dev/videoX format=yuyv,1920,1080,10 package_size=2048 io_method=mmap nbufs=3

特别注意以下事项:
1./dev/videoX设备节点一定是运行uvc-device-config.sh脚本后生成的设备节点/dev/video12
2./dev/vic0是预览摄像头产生的设备节点
3.uvc-device-config.sh配置uvc支持的格式,应用也只能预览uvc支持的格式
4.uvc传输包的大小范围是83072bit,包越大传输数度越快
5.uvc预览支持NV12、NV21、yuyv、grey、MJPG格式

4 uvc 预览使用常见问题

问题1:挂载usb设备失败 Error: usb configfs already mounted

答:需要先卸载其他usb设备,确保/sys/kernel/config/目录没有文件被挂载

问题2:创建uvc.0功能目录失败 mkdir: can't create directory 'functions/uvc.0': No such file or directory

答:kernel的 USB Webcam function功能没有配置,需要重新配置编译